//package a2025_02_21;
//
//import java.util.Queue;
//
//public class MyPriorityQueue{
//    public int[] elem;
//    public int usedSize;
//
//    public MyPriorityQueue(int[] arr,int usedSize){
//        this.elem=new int[usedSize];
//        this.usedSize=usedSize;
//        for(int i=0;i<usedSize;i++){
//            elem[i]=arr[i];
//        }
//        createHeap(arr);
//    }
//
//    public void createHeap(int[] arr){
//        int parent=(arr.length-1-1)/2;//得到最后一个叶子节点的父节点
//        while(parent>=0){
//            shiftDown(parent,usedSize-1);//当前元素一直向下调整，除了最后一层
//            parent--;//从最后一个叶子节点的父节点开始往前一个一个节点向下调整
//        }
//    }
//
//    public void offer(int x){
//        if(usedSize>=elem.length){
//            grow();
//        }
//        elem[usedSize++]=x;
//        shiftUp(usedSize-1);
//    }
//    public void shiftDown(int start,int end){
//        int child=start*2+1;
//        int parent=start;
//        while(child<=end){
//            if(child+1<=end&&elem[child+1]<elem[child]) child++;
//            if(elem[parent]<elem[child]){
//                swap(parent,child);
//                parent=child;
//                child=parent*2+1;
//            }else break;
//        }
//    }
//
//    public void swap(int i ,int j){
//        int temp=elem[i];
//        elem[i]=elem[j];
//        elem[j]=temp;
//    }
//    public void grow(){
//        int[] temp=new int[elem.length+10];
//        for(int i=0;i<elem.length;i++){
//            temp[i]=elem[i];
//        }
//        elem=temp;
//    }
//
//    public void shiftUp(int child){
//        int parent=(child-1)/2;
//        child=parent*2+1;
//        int end=usedSize-1;
//        while(parent>=0){
//            if(child+1<=end&&elem)
//        }
//    }
//}